<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // ... 扩展运算符, 可以将数组或者对象展开, 也可以将数组或者对象合并, 还可以复制数组或者对象, 还可以用于函数的参数列表, 还可以用于解构赋值

    // 1. 数组展开
    const arr = [1, 2, 3, 4, 5];
    console.log(...arr); // 1 2 3 4 5

    // 2. 数组合并
    const arr1 = [1, 2, 3];
    const arr2 = [4, 5, 6];
    console.log([...arr1, ...arr2]); // [1, 2, 3, 4, 5, 6]

    // 3. 复制数组
    const arr3 = [1, 2, 3, 4, 5];
    const arr4 = [...arr3];
    console.log(arr4); // [1, 2, 3, 4, 5]

    // 4. 函数参数列表
    function sum(a, b, c) {
      return a + b + c;
    }
    const arr5 = [1, 2, 3];
    console.log(sum(...arr5)); // 6

    // 5. 解构赋值
    const arr6 = [1, 2, 3, 4, 5];
    const [a, b, ...c] = arr6;
    console.log(a, b, c); // 1 2 [3, 4, 5]

    // 6. 对象展开
    const obj = { a: 1, b: 2, c: 3 };
    console.log(...obj); // a b c 1 2 3

    // 7. 对象合并
    const obj1 = { a: 1, b: 2 };
    const obj2 = { c: 3, d: 4 };
    console.log({ ...obj1, ...obj2 }); // { a: 1, b: 2, c: 3, d: 4 }


  </script>
</body>

</html>